#include <stdio.h>
#include "Dict.h"
#include <string.h>
#include <stdlib.h>

int main(void)
{
	int op;
	Dict dic;
	char pal[KEY_MAX_LENGTH];
	char def[1000];
	char *ptr;
	Key aux1;
	dic = dict_empty();
	do
	{
		printf("\n		=================================================");
		printf("\n		|						|");
		printf("\n		|	1. AGREGAR definicion			|");
		printf("\n		|	2. BORRAR definicion			|");
		printf("\n		|	3. BUSCAR definicion			|");
		printf("\n		|	4. MOSTRAR diccionario			|");
		printf("\n		|	5. Calcular la PERFORMANCE		|");
		printf("\n		|	6. CARGAR diccionario DESDE ARCHIVO	|");
		printf("\n		|	7. GRABAR diccionario EN ARCHIVO	|");
		printf("\n		|	8. SALIR				|");
		printf("\n		|						|");
		printf("\n		=================================================");
		printf("\n\n > ");
		scanf("%i",&op);
		getchar();
	
		switch(op)
		{
			case 1:
			printf("\nIngrese la palabra: ");
			scanf("%[^\n]s",pal);
			getchar();
			if(dict_exists(dic,pal) == TRUE)
				printf("\nLa palabra que se pretende agregar ya existe\n");
			else
			{
				printf("\nIngrese la definicion: ");
				scanf("%[^\n]s",def);
				getchar();
				dict_add(dic,pal,def);
				printf("\nSe ha agregado con exito la nueva definicion\n");
			}
			break;
			
			case 2:
			printf("\nIngrese la palabra: ");
			scanf("%[^\n]s",pal);
			getchar();	
			if(dict_exists(dic,pal) == TRUE)
			{
				aux1=key_fromString(pal);
				dict_del(dic,aux1);
				printf("\nLa definicion se ha eliminado con exito\n");
				key_destroy(aux1);
			}
			else
				printf("\nLa palabra no se ha encontrado\n");
			break;
			
			case 3:
			printf("\nIngrese la palabra: ");
			scanf("%[^\n]s",pal);
			getchar();
			if(dict_exists(dic,pal) == TRUE)
			{
				ptr = dict_search(dic,pal);
				printf("\nLa definicion asociada es '%s'\n", ptr);
				free(ptr);
				ptr=NULL;
			}
			else
				printf("\nNo se ha encontrado la palabra\n");
			break;

			case 4:
			printf ("\n");
			dict_pprint(dic);
			break;

			case 5:
			perfomance(dic);
			break;

			case 6:
			printf("\nIngrese el nombre del archivo: ");
			scanf("%[^\n]s", def);
			getchar();
			dic = dict_destroy(dic);
			dic = dict_fromFile(def);
			if (dict_length(dic) == 0)
				printf("\nHubo un error al cargar el diccionario\nProbablemente el archivo ingresado no existe\n");
			else
				printf("\nEl diccionario se ha cargado con exito\n");
			break;

			case 7:
			printf("\nIngrese el nombre del archivo: ");
			scanf("%[^\n]s", def);
			getchar();
			dict_toFile(def , dic);
			printf("\nEl diccionario se guardo exitosamente en '%s'\n",def);
			break;

			case 8:
			break;
			
			default :
			printf ("Ingrese una opcion valida!\n");
			break;
		
		}
	}
	while(op != 8);
	dic = dict_destroy(dic);
	return 0;
}
